// 将一组区间中所有重叠的区间进行合并，例如 [起点，终点] 这种方式
// 输入：[[1,3],[2,6],[15,18],[8,10],[10,11],[7,8]]
// 输出：[[1,6],[15,18],[7,11]]


let arr = [[1,3],[2,6],[15,18],[8,10],[10,11],[7,8]]
// let arr = [[1, 4], [4, 5]]
let res = [];
function isIn (a1, a2) {
    if ((a1[0] >= a2[0] && a1[0] <= a2[1]) || (a1[1] >= a2[0] && a1[1] <= a2[1])) {
        return true;
    }
    return false;
}

function foo (arr) {
    if (!arr.length) {
        return;
    }
    let temp = arr[0];
    let min = arr[0][0];
    let max = arr[0][1];
    arr.shift()
    for (let i = 0; i < arr.length; i++) {
        let val = arr[i];
        if (isIn(temp, val)) {
            min = Math.min(min, val[0]);
            max = Math.max(max, val[1]);
            temp = [min, max];
            arr.splice(i, 1);
            i--;
        }
    }
    res.push(temp);
    foo(arr);
}
foo(arr)
console.log('结果：', res)